package cn.tf.tfpay.fap.client;

import java.io.File;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.List;
import java.util.function.Consumer;

import cn.tf.tfpay.fap.server.RemoteFile;

/**
 * NFS java客户端定义.
 * 
 * @author cgnb_liuxb
 */
public interface FapClient {

	/** 获取文件信息,不包括内容 */
	RemoteFile get(String path);

	/** 一次读取整个文件 */
	byte[] read(RemoteFile file);
	
	/** 一次读取整个文件内容 */
	String readString(RemoteFile file, Charset charset);

	/** 读取文件流,适用于大文件 */
	void readStream(RemoteFile remoteFile, Consumer<InputStream> consumer);
	
	/** 使用流的方式复制到本地,适合大文件 */
	void download(RemoteFile remoteFile, File localFile);

	/** 列举目录下的文件列表 */
	List<RemoteFile> list(RemoteFile dir);

	/** 一次写整个文件 */
	void write(RemoteFile file, byte[] data);

	/** 写文件流 */
	void writeStream(RemoteFile file, InputStream os);

	/** 删除文件,返回:true-删除成功,false-失败 */
	boolean deleteFile(RemoteFile file);

	/** 创建目录 */
	boolean makeDir(RemoteFile dir);

	/** 删除目录 */
	boolean deleteDir(RemoteFile dir);

}
